home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / ab20 / ab20_archive / utilities / printer / post-1.6src.lzh / post.h < prev    next >
C/C++ Source or Header  |  1991-04-17  |  20KB  |  779 lines

  1. /* PostScript interpreter file "post.h" - header file */
  2. /* (C) Adrian Aylward 1989, 1991 */
  3.  
  4. # ifndef POST_H
  5. # define POST_H
  6.  
  7. /* Operating system or machine */
  8.  
  9. /* # define AMIGA  (defined for us on the Amiga!) */
  10. /* # define UNIX */
  11.  
  12. /* Standard libraries */
  13.  
  14. # include <stdio.h>
  15. # include <stdlib.h>
  16. # include <string.h>
  17. # include <setjmp.h>
  18. # include <math.h>
  19. # include <signal.h>
  20.  
  21. /* Use in line code for 68881 */
  22.  
  23. # ifdef AMIGA
  24. # ifdef LATTICE
  25. # ifdef M68881
  26. # include <m68881.h>
  27. # endif
  28. # endif
  29. # endif
  30.  
  31. /* So we can reassign the standard io files */
  32.  
  33. # define sstdin  stdin
  34. # define sstdout stdout
  35. # define sstderr stderr
  36.  
  37. /* Maximum and minimum */
  38.  
  39. # ifndef max
  40. # define max(a,b) ((a)>(b)?(a):(b))
  41. # endif
  42. # ifndef min
  43. # define min(a,b) ((a)<(b)?(a):(b))
  44. # endif
  45.  
  46. /* Machine word alignment */
  47.  
  48. # define mcalign 4
  49.  
  50. /* Conversions from floats to integers */
  51.  
  52. # define itrunc(rval) ((int) (rval))
  53.  
  54. /* Constants for arcs and Bezier curves */
  55.  
  56. # define degtorad   .0174532925199432957692
  57. # define radtodeg 57.295779513082320876
  58.  
  59. # define twopi     6.28318530717958647692 /* pi*2 */
  60. # define pi        3.14159265358979323846 /* pi   */
  61. # define pi2       1.57079632679489661923 /* pi/2 */
  62.  
  63. /* A very small angle.  (Anything smaller is a complete circle). */
  64.  
  65. # define pdelta     .00001
  66.  
  67. # define sqrt2     1.41421356237309504880 /* sqrt(2) */
  68.  
  69. # define f43rt2     .55228474983079339840 /* 4/3 * (sqrt(2)-1) / sqrt(2) */
  70. # define f43       1.33333333333333333333 /* 4/3 */
  71.  
  72. # define f12       0.5                    /* 1/2 */
  73. # define f14       0.25                   /* 1/4 */
  74. # define f18       0.125                  /* 1/8 */
  75. # define f38       0.375                  /* 3/8 */
  76.  
  77. /* Encryption constants */
  78.  
  79. # define eshift        8
  80. # define emask     65535
  81. # define ec1       52845
  82. # define ec2       22719
  83. # define einitexec 55665
  84. # define einitchar  4330
  85.  
  86. /* Limits */
  87.  
  88. # define maxdepth        20
  89. # define istacksize       9
  90. # define gstacksize      31
  91.  
  92. # define systemdictsize 300
  93. # define userdictsize   200
  94. # define fontdictsize   100
  95. # define errordictsize   40
  96. # define errdsdictsize   10
  97.  
  98. # define dashsize 11
  99.  
  100. # define maxargs         20
  101.  
  102. /* Version */
  103.  
  104. extern char version[];
  105.  
  106. /* Prompts */
  107.  
  108. # define promptsize 20
  109.  
  110. extern int prompting;
  111.  
  112. extern char prompt1[promptsize + 1], prompt2[promptsize + 1];
  113.  
  114. /* Times */
  115.  
  116. extern long time1, time2;
  117.  
  118. /* The random number */
  119.  
  120. extern unsigned int random;
  121.  
  122. /* The virtual machine */
  123.  
  124. typedef unsigned vmref;
  125.  
  126. # define vmsegmax        64
  127. # define vmstacksize     15     /* N.B. packing code assumes <= 256 */
  128. # define vmhashsize      31
  129.  
  130. extern int packing;
  131. extern int vmnest;
  132. extern int vmparms, vmsegno, vmsegsize;
  133. extern int vmused, vmhwm, vmmax;
  134.  
  135. extern char *vmbeg[vmsegmax]; 
  136. extern int vmnext[vmsegmax], vmsize[vmsegmax]; 
  137.  
  138. struct vmframe
  139. {   int generation, gnest, packing;
  140.     int vsegno, vnext, vused;
  141.     vmref hlist[vmhashsize + 1];
  142. };
  143.  
  144. struct vmlist
  145. {   vmref chain, vref;
  146.     int length;
  147. };
  148.  
  149. extern struct vmframe vmstack[vmstacksize + 1];
  150.  
  151. /* Objects */
  152.  
  153. struct object
  154. {   unsigned char type, flags;
  155.     unsigned short length;
  156.     union
  157.     {    int               ival;
  158.          float             rval;
  159.          vmref             vref;
  160.     } value;
  161. };
  162.  
  163. /* Dictionaries */
  164.  
  165. union dictkey
  166. {   struct object keyobj;
  167.     unsigned int keyint[2];
  168. };
  169.  
  170. struct dictentry
  171. {   struct object key, val;
  172. };
  173.  
  174. struct dictionary
  175. {   unsigned char type, flags;
  176.     unsigned short slots, size, full, saved, filler;
  177.     vmref vref;
  178.     int length;
  179.     struct dictentry entries[1];
  180. };
  181.  
  182. /* The name table */
  183.  
  184. struct name
  185. {   vmref chain;
  186.     unsigned int hash;
  187.     unsigned short length;
  188.     char string[2];
  189. };
  190.  
  191. # define namebufsize 128
  192.  
  193. extern char namebuf[namebufsize + 1];
  194.  
  195. # define nametablesize 512
  196.  
  197. extern vmref *nametable;
  198.  
  199. /* The stacks */
  200.  
  201. # define operstacksize 500
  202. # define execstacksize 250
  203. # define dictstacksize  20
  204.  
  205. extern int opernest, execnest, dictnest;
  206.  
  207. extern struct object *operstack, *execstack, *dictstack;
  208.  
  209. /* The file table */
  210.  
  211. # define openread  1
  212. # define openwrite 2
  213. # define openfont  4
  214.  
  215. # define filetablesize 20       /* N.B. packing code assumes <= 256 */
  216.  
  217. struct file
  218. {   int generation, saved, open;
  219.     int ch, uflg;
  220.     int stype, slen;
  221.     int emode, erand;
  222.     FILE *fptr;
  223. };
  224.  
  225. extern struct file *filetable;
  226.  
  227. /* Object types and flags */
  228.  
  229. # define typenull        0   /* null object is binary zeros */
  230. # define typemark        1   /* mark */
  231. # define typesave        2   /* save object */
  232. # define typeoper        3   /* operator */
  233. # define typefile        4   /* file */
  234. # define typeint         5   /* integer */
  235. # define typereal        6   /* real */
  236. # define typebool        7   /* boolean */
  237. # define typearray       8   /* array */
  238. # define typepacked      9   /* packedarray */
  239. # define typestring     10   /* string */
  240. # define typename       11   /* name */
  241. # define typedict       12   /* dictionary */
  242. # define typefont       13   /* fontID */
  243. # define typemax        14
  244.  
  245. # define typechar       14   /* char integer - only when packed */
  246. # define typeoper2      15   /* operator (bound name) - only when packed */
  247.  
  248. # define flagexec      128   /* executable (not literal) */
  249. # define flagwprot      64   /* write protection */
  250. # define flagrprot      32   /* read protection */
  251. # define flagxprot      16   /* execute protection */
  252. # define flagctrl        8   /* control (on execution stack) */
  253. # define flagloop        4   /* loop    (on execution stack) */
  254. # define flagrun         2   /* run     (on execution stack) */
  255. # define flagstop        1   /* stopped (on execution stack) */
  256.  
  257. extern char *typetable[typemax + 1];
  258.  
  259. /* Errors */
  260.  
  261. # define errdictfull             1
  262. # define errdictstackoverflow    2
  263. # define errdictstackunderflow   3
  264. # define errexecstackoverflow    4
  265. # define errinterrupt            5
  266. # define errinvalidaccess        6
  267. # define errinvalidexit          7
  268. # define errinvalidfileaccess    8
  269. # define errinvalidfont          9
  270. # define errinvalidrestore      10
  271. # define errinvalidstop         11
  272. # define errioerror             12
  273. # define errlimitcheck          13
  274. # define errnocurrentpoint      14
  275. # define errrangecheck          15
  276. # define errstackoverflow       16
  277. # define errstackunderflow      17
  278. # define errsyntaxerror         18
  279. # define errtimeout             19
  280. # define errtypecheck           20
  281. # define errundefined           21
  282. # define errundefinedfilename   22
  283. # define errundefinedresult     23
  284. # define errunmatchedmark       24
  285. # define errunregistered        25
  286. # define errVMerror             26
  287. # define errmemoryallocation    27
  288. # define errkill                28
  289. # define errmax                 28
  290.  
  291. extern char *errortable[errmax + 1];
  292.  
  293. extern struct object errorname[errmax + 1];
  294.  
  295. extern struct object errordict;
  296.  
  297. # define edsnewerror             0
  298. # define edserrorname            1
  299. # define edscommand              2
  300. # define edsostack               3
  301. # define edsestack               4
  302. # define edsdstack               5
  303. # define edsmax                  6
  304.  
  305. extern char *errdstable[edsmax];
  306.  
  307. extern struct object errdsname[edsmax], errdstoken[edsmax];
  308.  
  309. extern struct object errdsdict;
  310.  
  311. extern int errorflag, errornum;
  312. extern char *errorstring;
  313.  
  314. extern int returncode;
  315.  
  316. extern int intsigflag;
  317.  
  318. /* The operator table */
  319.  
  320. extern struct object *currtoken;
  321.  
  322. struct operator
  323. {   void (*func)();
  324.     char *sptr;
  325. };
  326.  
  327. # define optablesize 250        /* N.B. packing code assumes <= 256 */
  328.  
  329. extern int opnum;
  330. extern struct operator *optable;
  331.  
  332. /* Various names for character operations */
  333.  
  334. # define charstdencoding         0
  335. # define charnotdef              1
  336. # define charfontdirectory       2
  337. # define charfonttype            3
  338. # define charfontmatrix          4
  339. # define charfontbbox            5
  340. # define charencoding            6
  341. # define charfid                 7
  342. # define charuniqueid            8
  343. # define charbuildchar           9
  344. # define charmetrics            10
  345. # define charpainttype          11
  346. # define charstrokewidth        12
  347. # define charcharstrings        13
  348. # define charprivate            14
  349. # define charsubrs              15
  350. # define charleniv              16
  351. # define charbluevalues         17
  352. # define charotherblues         18
  353. # define charbluescale          19
  354. # define charblueshift          20
  355. # define charbluefuzz           21
  356. # define charmax                22
  357.  
  358. extern char *chartable[charmax];
  359.  
  360. extern struct object charname[charmax];
  361.  
  362. /* The standard encoding vector */
  363.  
  364. extern char *stdentable[192];
  365.  
  366. extern struct object *stdencoding;
  367.  
  368. /* Paths, lines, and line segments */
  369.  
  370. # define ptmove   1
  371. # define ptline   2
  372. # define ptcurve  3
  373. # define ptclosei 4
  374. # define ptclosex 5
  375.  
  376. struct point
  377. {   int type;
  378.     float x, y;
  379. };
  380.  
  381. extern int pathsize;
  382. extern int pathbeg, pathend, pathseg;
  383.  
  384. extern struct point *patharray;
  385.  
  386. struct line
  387. {   struct line *chain;
  388.     signed char cdir, fdir;
  389.     short filler;
  390.     short y1, y2;
  391.     int xx, dx, d1, d2;
  392. };
  393.  
  394. extern int linesize;
  395. extern int lineend;
  396.  
  397. extern struct line *linearray;
  398. extern struct line **lineptr;
  399.  
  400. struct lineseg
  401. {   signed char cdir, fdir;
  402.     short x;
  403. };
  404.  
  405. extern struct lineseg *linesegarray;
  406.  
  407. struct clip
  408. {   struct clip *chain;
  409.     signed char cdir, fdir;
  410.     char flag, swap;
  411.     int x1, y1, x2, y2;
  412. };
  413.  
  414. extern int clipsize;
  415. extern int clipend;
  416.  
  417. extern struct clip *cliparray;
  418. extern struct clip **clipptr;
  419.  
  420. /* The halftone screens */
  421.  
  422. extern int halfok;
  423.  
  424. extern char *halfbeg;
  425. extern int halfsize;
  426.  
  427. struct halftone
  428. {   int    psize, xsize, ysize;
  429.     int    area, xrep;
  430.     int    dx, dy;
  431.     short *spotkey;
  432.     short *spotsub;
  433.     short *spotnum;
  434.     char **spotptr;
  435.     int    spotmax, spotnext;
  436. };
  437.  
  438. extern struct halftone halftone[4];
  439.  
  440. extern int screenok;
  441.  
  442. struct halfscreen
  443. {   int    num;
  444.     char  *ptr;
  445.     struct halftone *halftone;
  446. };
  447.  
  448. extern struct halfscreen halfscreen[4];
  449.  
  450. /* The page buffer and output device */
  451.  
  452. struct device
  453. {   char *buf[24];
  454.     int len;
  455.     short depth, reserved[3];
  456.     short xoff, yoff;
  457.     short xbytes, xsize, ysize, ybase, yheight;
  458.     short xden, yden, ydir;
  459. };
  460.  
  461. extern struct device page;
  462.  
  463. /* The x buffers, y bucket array, and line filling limits */
  464.  
  465. extern int xbsize;
  466. extern int *xshf;
  467. extern char *xbuf;
  468.  
  469. extern int ybflag;
  470. extern struct line **ybucket;
  471.  
  472. # define xlwb -1000.0 * 256.0
  473. # define xupb 31767.0 * 256.0
  474.  
  475. extern double ylwb, yupb;
  476. extern double ymin, ymax;
  477.  
  478. /* The graphics state */
  479.  
  480. struct gstate
  481. {   struct object font;
  482.     struct object dasharray; 
  483.     struct object transfer[4];
  484.     struct object screenfunc[4];
  485.     struct object ucr, gcr;
  486.     struct device dev;
  487.     float ctm[6];
  488.     float linewidth;
  489.     float flatness;
  490.     float dashoffset, dashlength[dashsize];
  491.     float mitrelimit, mitresin;
  492.     float gray, rgb[3], rgbw[4];
  493.     float shade[4];
  494.     float screenfreq[4], screenangle[4];
  495.     short clipbeg, pathbeg, pathend;
  496.     short linecap, linejoin;
  497.     short transdepth;
  498.     short screendepth;
  499.     short shadeok, clipflag, cacheflag, nullflag;
  500. };
  501.  
  502. extern int gnest;
  503.  
  504. extern struct gstate gstate, *gstack;
  505.  
  506. extern struct object copies;
  507.  
  508. /* The interpreter state flags */
  509.  
  510. # define intgraph                1
  511. # define intchar                 2
  512.  
  513. /* The interpreter recursion stack */
  514.  
  515. struct istate
  516. {   int flags, type;
  517.     int vmbase, gbase;
  518.     int execbase;
  519.     int fclim;
  520.     struct fcrec *pfcrec;
  521.     jmp_buf errjmp;
  522. };
  523.  
  524. extern int inest;
  525.  
  526. extern struct istate istate, *istack;
  527.  
  528. /* The font directory and make cache */
  529.  
  530. extern struct object fontdir;
  531.  
  532. extern int fonttype, fontid, fontencodlen;
  533. extern vmref fontmatrix, fontencoding;
  534.  
  535. # define fmsize     20
  536.  
  537. struct fmrec
  538. {   int count, id, encodlen;
  539.     vmref encoding, dref;
  540.     float matrix[6];
  541. };
  542.  
  543. extern struct fmrec *fmcache;
  544.  
  545. extern int fmcount;
  546.  
  547. /* The font character cache */
  548.  
  549. # define fcsize    256
  550.  
  551. struct fcrec
  552. {   struct fcrec *chain;
  553.     vmref dref, nref;
  554.     struct point width;
  555.     float matrix[4];
  556.     int reclen, count, id;
  557.     unsigned int hash;
  558.     int len;
  559.     short xbytes, xsize, ysize;
  560.     short xoffset, yoffset;
  561. };
  562.  
  563. extern struct fcrec **fccache;
  564.  
  565. extern struct fcrec *fcbeg, *fcend, *fcptr;
  566.  
  567. extern int fclen, fclimit;
  568.  
  569. /* Font build data for type 1 */
  570.  
  571. extern int fontpainttype;
  572. extern float fontstrokewidth;
  573. extern vmref fontmetrics, fontcharstrings, fontprivate;
  574. extern struct object fontbuildproc, fontsubrs;
  575. extern int fontleniv;
  576.  
  577. /* Allocated memory */
  578.  
  579. # define memlsegmax  20
  580. # define mempsegmax  20
  581.  
  582. extern void *memfbeg, *memhbeg;
  583. extern void *memlbeg, *mempbeg, *memibeg, *memxbeg, *memybeg;
  584.  
  585. extern int   memflen,  memhlen;
  586. extern int   memllen,  memplen,  memilen,  memxlen,  memylen;
  587.  
  588. extern int   memvmin,  memlmin,  mempmin;
  589.  
  590. /* Implementation dependent routines */
  591.  
  592. extern int  flushlevel(int level);
  593. extern void flushlpage(int y1, int y2);
  594. extern int  copypage(int num);
  595. extern void *memalloc(int length);
  596. extern void memfree(void *beg, int length);
  597.  
  598. /* Routines  - file "postint.c" */
  599.  
  600. /* Build a virtual machine reference */
  601.  
  602. # define vmxref(s,n) ((s<<24)+n)
  603.  
  604. /* Convert a virtual machine reference to a pointer */
  605.  
  606. # define vmsptr(v) (vmbeg[v>>24]+(v&0xffffff))
  607. # define vmaptr(v) ((struct object *)(vmsptr(v)))
  608. # define vmnptr(v) ((struct name *)(vmsptr(v)))
  609. # define vmdptr(v) ((struct dictionary *)(vmsptr(v)))
  610. # define vmvptr(v) ((void *)(vmsptr(v)))
  611.  
  612. /* Check if a virtual machine reference is newer than a save frame */
  613.  
  614. # define vmscheck(f,v) (v>=vmxref(f->vsegno,f->vnext))
  615.  
  616. /* Allocate a new array */
  617.  
  618. # define arrayalloc(length) \
  619.     vmalloc((length) * sizeof (struct object))
  620.  
  621. /* Save an array before updating it */
  622.  
  623. # define arraysave(aref, length) \
  624.     vmsavemem(aref, (length) * sizeof (struct object))
  625.  
  626. /* Copy an array */
  627.  
  628. # define arraycopy(aptr1, aptr2, length) \
  629.     memcpy((char *) (aptr1), (char *) (aptr2), \
  630.            (length) * sizeof (struct object))
  631.  
  632. extern void initint(int parms);
  633. extern void tidyint(void);
  634. extern void systemname(struct object *token, char *sptr, int flags);
  635. extern void systemop(void (*func)(), char *sptr);
  636. extern void interpret(struct object *interpreting);
  637. extern void pushint(void);
  638. extern void popint(void);
  639. extern void putch(FILE *fptr, int ch);
  640. extern void putstr(FILE *fptr, char *str);
  641. extern void putmem(FILE *fptr, char *str, int length);
  642. extern void putcheck(FILE *fptr, char *str, int length);
  643. extern void fileopen(struct object *token, int open, char *name, int length);
  644. extern void fileclose(struct object *token);
  645. extern struct file *filecheck(struct object *token, int open);
  646. extern int  getfseg(struct file *file);
  647. extern void fileeinit(struct object *token);
  648. extern int  readch(struct object *input, int depth);
  649. extern void unreadch(struct object *input, int ch);
  650. extern int  digitval(int ch);
  651. extern int  scantoken(struct object *token, struct object *input, int depth);
  652. extern int  numtoken(struct object *token, char *string);
  653. extern void nametoken(struct object *token, char *string,
  654.                       int length, int flags);
  655. extern void dicttoken(struct object *token, int size);
  656. extern void dictput(vmref dref, struct object *key, struct object *val);
  657. extern int  dictget(vmref dref, struct object *key, struct object *val,
  658.                     int flags);
  659. extern int  dictfind(struct object *key, struct object *val);
  660. extern vmref arraypack(struct object *aptr, int length);
  661. extern void arrayunpk(struct object *aptr, char *sptr, int length);
  662. extern int  pack(struct object *token, char *sptr);
  663. extern int  unpack(struct object *token, char *sptr);
  664. extern void vminit(int parms);
  665. extern void vmtidy(void);
  666. extern void vmparm(int parm, void *bag, int size);
  667. extern vmref vmalloc(int size);
  668. extern void *vmallocv(int size);
  669. extern void *vmxptr(vmref vref);
  670. extern char *vmstring(int length, int size);
  671. extern void vmallocseg(int blksize, int length);
  672. extern void vmsavemem(vmref vref, int length);
  673. extern void vmsave(struct object *token);
  674. extern void vmrest(int nest, int generation);
  675. extern void vmrestcheck(struct vmframe *vmframe,
  676.                         struct object *stackptr, int stackcnt);
  677. extern void vmrestfiles(int nest);
  678. extern void vmrestnames(struct vmframe *vmframe);
  679. extern void vmrestmem(int nest);
  680. extern int  cvstring(struct object *token, char *sptr, int length);
  681. extern void printequals(FILE *fptr, struct object *token);
  682. extern void printeqeq(FILE *fptr, struct object *token,
  683.                       int depth, int count);
  684. extern int  equal(struct object *token1, struct object *token2);
  685. extern int  compare(struct object *token1, struct object *token2);
  686. extern void bind(struct object *proc, int depth);
  687. extern int  usertime(void);
  688. extern void stop(void);
  689. extern void error(int errnum);
  690. extern void errorarray(struct object *token1, struct object *aptr,
  691.                        int length);
  692. extern void errorexit(void);
  693. extern void errormsg(void);
  694. extern void errorjmp(int nest, int num);
  695.  
  696. /* Routines  - file "postchar.c" */
  697.  
  698. extern void initchar(void);
  699. extern void vmrestfont(struct vmframe *vmframe);
  700. extern void definefont(struct object *key, struct object *font);
  701. extern void findfont(struct object *key, struct object *font);
  702. extern void makefont(struct object *font, float *matrix);
  703. extern void setfont(struct object *font);
  704. extern void checkfont(struct object *font, int fid);
  705. extern void show(struct object *string, int type,
  706.                  struct point *width, int wchar, struct object *proc);
  707. extern void charpath(void);
  708. extern void setcharwidth(struct point *width);
  709. extern void setcachedevice(struct point *ll, struct point *ur, int ftype);
  710. extern void cachestatus(int *status);
  711. extern void nulldevice(void);
  712. extern void cacheimage(struct fcrec *pfcrec, struct point *point);
  713.  
  714. /* Routines  - file "postfont.c" */
  715.  
  716. extern void initfont(void);
  717. extern void initbuild(vmref dref);
  718. extern void buildchar(int schar);
  719.  
  720. /* Routines  - file "postgraph.c" */
  721.  
  722. extern void initgstate(void);
  723. extern void initgraphics(void);
  724. extern void initctm(float newctm[]);
  725. extern void setdevice(struct device *ppage);
  726. extern void checkimagesize(int len);
  727. extern void checklinesize(int size);
  728. extern void checkpathsize(int size);
  729. extern void cliplength(int cliplen);
  730. extern void clippath(void);
  731. extern void gsave(void);
  732. extern void grest(void);
  733. extern void grestall(void);
  734. extern void getmatrix(vmref aref, float *matrix);
  735. extern void putmatrix(vmref aref, float *matrix);
  736. extern void multiplymatrix(float *mat1, float *mat2, float *mat3);
  737. extern void invertmatrix(float *mat1, float *mat2);
  738. extern void transform(struct point *ppoint, float *matrix);
  739. extern void dtransform(struct point *ppoint, float *matrix);
  740. extern void itransform(struct point *ppoint, float *matrix);
  741. extern void idtransform(struct point *ppoint, float *matrix);
  742. extern void arc(int dir, float radaa[3],
  743.                 struct point *centre, struct point *beg, struct point *end);
  744. extern void closepath(int type);
  745. extern void flattenpath(void);
  746. extern void strokepath(int fillflag);
  747. extern void clip(int eoflag);
  748.  
  749. /* Routines  - file "postdraw.c" */
  750.  
  751. extern void setupfill(void);
  752. extern void fill(int beg, int end, int eoflag);
  753. extern void setybucket(int base, int size);
  754. extern void image(int width, int height, int bps, float *matrix, int mode,
  755.                   int ncol, int multi, struct object *procs);
  756. extern void erasepage(void);
  757.  
  758. /* Routines  - file "postshade.c" */
  759.  
  760. extern void mapcolour(int n1, float *colour1, int n2, float *colour2);
  761. extern void setcolour(int n, float *colour);
  762. extern void gethsbcolour(float *hsb);
  763. extern void sethsbcolour(float *hsb);
  764. extern void calltransfer(float *colour, float *shade);
  765. extern void setupshade(void);
  766. extern void setuphalf(void);
  767. extern void setupscreen(float *shade);
  768.  
  769. /* Routines  - files postop1.c, postop2.c, postop3.c, postop4.c */
  770.  
  771. extern void initop1(void);
  772. extern void initop2(void);
  773. extern void initop3(void);
  774. extern void initop4(void);
  775.  
  776. # endif
  777.  
  778. /* End of file "post.h" */
  779.